package com.example.demo.domain.entity;

import com.baomidou.mybatisplus.annotation.TableName;
import com.example.demo.domain.base.BaseDO;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.math.BigDecimal;
import java.util.Date;

/**
 * OrderInfoDO
 *
 * @author Qwen
 * @date 2025/11/22 12:30
 **/
@EqualsAndHashCode(callSuper = true)
@Data
@TableName("order_info")
public class OrderInfoDO extends BaseDO {

    /**
     * 订单编号（全局唯一，格式：yyyyMMddHHmmss + 6位序列）
     */
    private String orderNo;

    /**
     * 关联的主订单编号（用于跨店聚合）
     */
    private String mainOrderNo;

    /**
     * 下单用户ID
     */
    private Long userId;

    /**
     * 所属店铺ID
     */
    private Long shopId;

    /**
     * 店铺名称（快照）
     */
    private String shopName;

    /**
     * 订单状态：0-待支付，1-已支付，2-已发货，3-已完成，4-已取消，5-退款中，6-已退款
     */
    private Integer status;

    /**
     * 订单状态描述（冗余字段，便于展示）
     */
    private String statusDesc;

    /**
     * 商品总金额（未优惠前）
     */
    private BigDecimal totalAmount;

    /**
     * 实付金额（含优惠后，需支付金额  用户实付金额）
     */
    private BigDecimal actualAmount;

    /**
     * 本子订单商品总件数
     */
    private Integer totalQuantity;

    /**
     * 优惠总金额（包括营销活动、满减等）
     */
    private BigDecimal discountAmount;

    /**
     * 配送费
     */
    private BigDecimal deliveryFee;

    /**
     * 支付方式：alipay-支付宝，wechat-微信，balance-余额，cod-货到付款
     */
    private String paymentMethod;

    /**
     * 支付完成时间
     */
    private Date paymentTime;

    /**
     * 实际支付金额（用于对账,商家应收 除去平台抽成后的金额）
     */
    private BigDecimal paidAmount;

    /**
     * 收货人姓名（快照）
     */
    private String consignee;

    /**
     * 收货人手机号（快照）
     */
    private String phone;

    /**
     * 详细收货地址（快照）
     */
    private String addressDetail;

    /**
     * 省份（快照）
     */
    private String province;

    /**
     * 城市（快照）
     */
    private String city;

    /**
     * 区/县（快照）
     */
    private String district;

    /**
     * 邮政编码（快照）
     */
    private String postalCode;

    /**
     * 用户下单备注（快照）
     */
    private String remark;

    /**
     * 是否需要发票：0-不需要，1-需要
     */
    private Integer invoiceNeeded;

    /**
     * 发票抬头（快照）
     */
    private String invoiceTitle;

    /**
     * 纳税人识别号（快照）
     */
    private String invoiceTaxNo;

    /**
     * 创建来源：1-购物车结算，0-立即购买
     */
    private Integer createdFromCart;

    /**
     * 营销活动摘要（JSON字符串）
     */
    private String marketingSummary;

    /**
     * 物流公司名称
     */
    private String logisticsCompany;

    /**
     * 快递单号
     */
    private String trackingNo;

    /**
     * 发货时间
     */
    private Date deliveryTime;

    /**
     * 预计送达时间
     */
    private Date estimatedArrival;
}